<template>
  <div id="aCoursesList" class="bg-fa of">
    <!-- 课程详情 开始 -->
    <section class="container">
      <!-- 课程所属分类 开始 -->
      <section class="path-wrap txtOf hLh30">
        <a href="#" title class="c-999 fsize14">首页</a>
        \
        <a href="/course" title class="c-999 fsize14">课程列表</a>
        \
        <span class="c-333 fsize14">{{ course.subjectLevelOne }}</span>
        \
        <span class="c-333 fsize14">{{ course.subjectLevelTwo }}</span>
      </section>
      <!-- /课程所属分类 结束 -->

      <!-- 课程基本信息 开始 -->
      <div>
        <article class="c-v-pic-wrap" style="height: 357px;">
          <section id="videoPlay" class="p-h-video-box">
            <img :src="course.cover" :alt="course.title" class="dis c-v-pic" />
          </section>
        </article>
        <aside class="c-attr-wrap">
          <section class="ml20 mr15">
            <h2 class="hLh30 txtOf mt15">
              <span class="c-fff fsize24">{{ course.title }}</span>
            </h2>
            <section class="c-attr-jg">
              <span class="c-fff">价格：</span>
              <b class="c-yellow" style="font-size:24px;"
                >￥{{ course.price }}</b
              >
            </section>
            <section class="c-attr-mt c-attr-undis">
              <span class="c-fff fsize14"
                >主讲： {{ course.teacherName }}&nbsp;&nbsp;&nbsp;</span
              >
            </section>
            <section v-if="isStarCourse" class="of">
              <span class="ml10 vam">
                <el-button
                  style="
                  background: #54ff9f;
                  border: none;
                  font-size: 20px;"
                  icon="el-icon-star-on"
                  @click="undoStar()"
                >

                </el-button>
              </span>
            </section>
            <section v-else class="of">
              <span class="ml10 vam">
                <el-button
                  style="
                  background: #54ff9f;
                  border: none;
                  font-size: 20px;"
                  icon="el-icon-star-off"
                  @click="starCourse()"
                >

                </el-button>
              </span>
            </section>
            <section
              v-if="isbuyCourse || Number(course.price) === 0"
              class="c-attr-mt"
            >
              <button
                title="评价课程"
                class="comm-btn c-btn-3"
                @click="dialogVisible = true"
              >
                评价课程
              </button>
            </section>
            <section v-else class="c-attr-mt">
              <button
                title="立即购买"
                class="comm-btn c-btn-3"
                style="background-color: #c01a20"
                @click="createOrder()"
              >
                立即购买
              </button>
            </section>
          </section>
        </aside>
        <el-dialog
          title="评分"
          :visible.sync="dialogVisible"
          width="30%">
          <el-rate
            v-model="rateComment.rate"
            show-score
            text-color="#ff9900"
            score-template="{value}">
          </el-rate>
          <el-input
            type="textarea"
            :autosize="{ minRows: 2, maxRows: 4}"
            placeholder="请输入评价"
            v-model="rateComment.content">
          </el-input>
          <span slot="footer" class="dialog-footer">
            <el-button @click="cancel()">取 消</el-button>
            <el-button type="primary" @click="rateCourse()">确 定</el-button>
          </span>
        </el-dialog>
        <aside class="thr-attr-box">
          <ol class="thr-attr-ol clearfix">
            <li>
              <p>&nbsp;</p>
              <aside>
                <span class="c-fff f-fM">购买数</span>
                <br />
                <h6 class="c-fff f-fM mt10">{{ course.buyCount }}</h6>
              </aside>
            </li>
            <li>
              <p>&nbsp;</p>
              <aside>
                <span class="c-fff f-fM">课时数</span>
                <br />
                <h6 class="c-fff f-fM mt10">{{ course.lessonNum }}</h6>
              </aside>
            </li>
            <li>
              <p>&nbsp;</p>
              <aside>
                <span class="c-fff f-fM">浏览数</span>
                <br />
                <h6 class="c-fff f-fM mt10">{{ course.viewCount }}</h6>
              </aside>
            </li>
          </ol>
        </aside>
        <div class="clear" />
      </div>
      <el-tabs v-model="activeName">
        <el-tab-pane label="课程详情" name="first">
          <div class="mt20 c-infor-box">
            <article class="fl col-7">
              <section class="mr30">
                <div class="i-box">
                  <article class="ml10 mr10 pt20">
                    <!-- 课程详情介绍 开始 -->
                    <div>
                      <h6 class="c-i-content c-infor-title">
                        <span>课程介绍</span>
                      </h6>
                      <div class="course-txt-body-wrap">
                        <section class="course-txt-body">
                          <!-- 将内容中的html翻译过来 -->
                          <p v-html="course.description">
                            {{ course.description }}
                          </p>
                        </section>
                      </div>
                    </div>
                    <!-- /课程详情介绍 结束 -->

                    <!-- 课程大纲 开始-->
                    <div class="mt50">
                      <h6 class="c-g-content c-infor-title">
                        <span>课程大纲</span>
                      </h6>
                      <section class="mt20">
                        <div class="lh-menu-wrap">
                          <menu id="lh-menu" class="lh-menu mt10 mr10">
                            <ul style="width: 682px">
                              <!-- 课程章节目录 -->
                              <li
                                v-for="chapter in chapterList"
                                :key="chapter.id"
                                class="lh-menu-stair"
                              >
                                <a
                                  :title="chapter.title"
                                  href="javascript: void(0)"
                                  class="current-1"
                                >
                                  <em class="lh-menu-i-1 icon18 mr10" />{{
                                    chapter.title
                                  }}
                                </a>
                                <ol class="lh-menu-ol" style="display: block;">
                                  <li
                                    v-for="video in chapter.children"
                                    :key="video.id"
                                    class="lh-menu-second ml30"
                                  >
                                    <a
                                      :href="'/player/' + video.videoSourceId"
                                      :title="video.title"
                                      target="_blank"
                                    >
                                  <span v-if="video.free === true" class="fr">
                                    <i class="free-icon vam mr10">免费试听</i>
                                  </span>
                                      <em class="lh-menu-i-2 icon16 mr5">&nbsp;</em
                                      >{{ video.title }}
                                    </a>
                                  </li>
                                </ol>
                              </li>
                            </ul>
                          </menu>
                        </div>
                      </section>
                    </div>
                    <!-- /课程大纲 结束 -->
                  </article>
                </div>
              </section>
            </article>
            <aside class="fl col-3">
              <div class="i-box">
                <!-- 主讲讲师 开始-->
                <div>
                  <section v-if="Number(course.type) === 1" class="c-infor-tabTitle c-tab-title">
                    <a title href="javascript:void(0)">主讲讲师</a>
                  </section>
                  <section v-else class="c-infor-tabTitle c-tab-title">
                    <a title href="javascript:void(0)">上传用户</a>
                  </section>
                  <section class="stud-act-list">
                    <ul style="height: auto;">
                      <li>
                        <div v-if="Number(course.type) === 1" class="u-face">
                          <a :href="'/teacher/' + course.teacherId" target="_blank">
                            <img :src="course.avatar" width="50" height="50" alt />
                          </a>
                        </div>
                        <div v-else class="u-face">
                          <img :src="course.avatar" width="50" height="50" alt />
                        </div>
                        <section v-if="Number(course.type) === 1" class="hLh30 txtOf">
                          <a
                            :href="'/teacher/' + course.teacherId"
                            class="c-333 fsize16 fl"
                            target="_blank"
                          >{{ course.teacherName }}</a
                          >
                        </section>
                        <section v-else class="hLh30 txtOf">
                          <a href="#"
                             class="c-333 fsize16 fl"
                             target="_blank"
                          >{{ course.teacherName }}</a
                          >
                        </section>
                        <section v-if="Number(course.type) === 1" class="hLh20 txtOf">
                          <span class="c-999">{{ course.intro }}</span>
                        </section>
                      </li>
                    </ul>
                  </section>
                </div>
                <!-- /主讲讲师 结束 -->
              </div>
            </aside>
            <div class="clear" />
          </div>
        </el-tab-pane>
        <el-tab-pane label="课程评价" name="second">
          <div class="mt50 commentHtml">
            <div style="margin-left: 20px;margin-right: 20px">
              <el-rate
                v-model="course.rate"
                disabled
                show-score
                text-color="#ff9900"
                score-template="{value}">
              </el-rate>
              <section class="lh-bj-list pr mt20 replyhtml">
                <ul style="width: 100%">
                  <li class="unBr">
                    <aside class="noter-pic">
                      <img
                        width="50"
                        height="50"
                        class="picImg"
                        :src="user.avatar"
                      />
                    </aside>
                    <div class="of">
                      <section class="n-reply-wrap">
                        <fieldset>
                    <textarea
                      name=""
                      v-model="comment.content"
                      placeholder="输入您要评论的文字"
                      id="commentContent"
                    ></textarea>
                        </fieldset>
                        <p class="of mt5 tar pl10 pr10">
                    <span class="fl "
                    ><span
                      class="c-red commentContentmeg"
                      style="display: none;"
                    ></span
                    ></span>
                          <input
                            type="button"
                            @click="addComment()"
                            value="回复"
                            class="lh-reply-btn"
                          />
                        </p>
                      </section>
                    </div>
                  </li>
                </ul>
              </section>
              <section class="question-list lh-bj-list pr">
                <ul class="pr10" style="width: 100%">
                  <li v-for="(comment, index) in data.items" v-bind:key="index">
                    <aside class="noter-pic">
                      <img
                        width="50"
                        height="50"
                        class="picImg"
                        :src="comment.avatar"
                      />
                    </aside>
                    <div class="of">
                  <span class="fl">
                    <span class="fsize12 c-blue"> {{ comment.nickname }}</span>
                    <span class="fsize12 c-999 ml5">评论：</span></span
                  >
                    </div>
                    <div class="noter-txt mt5">
                      <p>{{ comment.content }}</p>
                    </div>
                    <div class="of mt5">
                  <span class="fr"
                  ><span class="fsize12 c-999 ml5">{{
                      comment.gmtCreate
                    }}</span></span
                  >
                    </div>
                  </li>
                </ul>
              </section>
              <!-- 公共分页 开始 -->
              <div class="paging">
                <!-- undisable这个class是否存在，取决于数据属性hasPrevious -->
                <a
                  :class="{ undisable: !data.hasPrevious }"
                  href="#"
                  title="首页"
                  @click.prevent="gotoPage(1)"
                >首</a
                >
                <a
                  :class="{ undisable: !data.hasPrevious }"
                  href="#"
                  title="前一页"
                  @click.prevent="gotoPage(data.current - 1)"
                >&lt;</a
                >
                <a
                  v-for="page in data.pages"
                  :key="page"
                  :class="{
              current: data.current == page,
              undisable: data.current == page
            }"
                  :title="'第' + page + '页'"
                  href="#"
                  @click.prevent="gotoPage(page)"
                >{{ page }}</a
                >
                <a
                  :class="{ undisable: !data.hasNext }"
                  href="#"
                  title="后一页"
                  @click.prevent="gotoPage(data.current + 1)"
                >&gt;</a
                >
                <a
                  :class="{ undisable: !data.hasNext }"
                  href="#"
                  title="末页"
                  @click.prevent="gotoPage(data.pages)"
                >末</a
                >
                <div class="clear" />
              </div>
              <!-- 公共分页 结束 -->
            </div>
          </div>
        </el-tab-pane>
      </el-tabs>
    </section>
  </div>
</template>

<script>
import course from "@/api/course";
import comment from "@/api/comment";
import order from "@/api/order";
import collect from "@/api/collect";
import user from "@/api/login";
export default {
  //和页面异步开始的
  asyncData({ params, error }) {
    return { courseId: params.id };
  },
  data() {
    return {
      data: {},
      page: 1,
      limit: 4,
      total: 10,
      comment: {
        content: "",
        courseId: ""
      },
      rateComment: {
        id: "",
        courseId: "",
        userId: "",
        nickname: "",
        avatar: "",
        rate: 0,
        oldRate: -1,
        content: ""
      },
      course: {
        userId: "",
        nickname: "",
        avatar: "~/assets/img/avatar-boy.gif"
      },
      user: {},
      chapterList: [],
      isbuyCourse: false,
      isStarCourse: false,
      activeName: 'first',
      dialogVisible: false
    };
  },
  created() {
    this.initCourseInfo();
    this.initComment();
    this.initUser();
  },
  methods: {
    //根据课程id，调用接口方法生成订单
    createOrder() {
      order.createOrder(this.courseId).then(response => {
        if (response.data.code == 0) {
          //订单创建成功，跳转到订单页面
          this.$router.push({ path: "/order/" + response.data.data.orderId });
        }
      });
    },

    //为课程评分
    rateCourse() {
      this.dialogVisible = false;
      course.rateCourse(this.rateComment).then(response => {
          if(response.data.code == 0) {
            this.course.rate = response.data.data.rateCourseInfo.rate;
            this.course.rateCount = response.data.data.rateCourseInfo.rateCount;
            this.rateComment.rate = response.data.data.rateCourseInfo.myRate;
            this.rateComment.content = response.data.data.rateCourseInfo.content;
            this.rateComment.oldRate = this.rateComment.rate;
            this.initComment();
          }
      })
    },

    //取消评分
    cancel() {
      this.dialogVisible = false;
    },

    starCourse() {
      let my = this;
      collect.starCourse(this.courseId).then(response => {
        my.isStarCourse = true;
      })
    },

    undoStar() {
      let my = this;
      collect.undoStar(this.courseId).then(response => {
        my.isStarCourse = false;
      })
    },

    //获取课程详情
    initCourseInfo() {
      course.getCourseInfo(this.courseId).then(response => {
        this.course = response.data.data.courseFrontInfo;
        this.chapterList = response.data.data.chapterVideoList;
        this.isbuyCourse = response.data.data.isbuy;
        this.isStarCourse = response.data.data.isStar;
      });
      this.initRateCourseInfo();
    },

    initRateCourseInfo() {
      comment.getCommon(this.courseId).then(response => {
        if (response.data.message === "未曾评分") {
          this.rateComment.avatar = this.user.avatar;
          this.rateComment.courseId = this.courseId;
          this.rateComment.userId = this.user.id;
          this.rateComment.nickname = this.user.nickname;
        } else {
          this.rateComment = response.data.data.commentInfo;
          this.rateComment.oldRate = this.rateComment.rate;
        }
      })
    },

    initUser() {
      user.getLoginInfo().then(response => {
        if (response.data.code !== -211) {
          this.user = response.data.data.item
        }
      })
    },
    initComment() {
      comment
        .getPageList(this.page, this.limit, this.courseId)
        .then(response => {
          this.data = response.data.data;
        });
    },
    addComment() {
      this.comment.courseId = this.courseId;
      comment.addComment(this.comment).then(response => {
        if (response.data.code === 0) {
          this.comment.content = "";
          this.initComment();
        }
      });
    },
    gotoPage(page) {
      comment.getPageList(page, this.limit, this.courseId).then(response => {
        this.data = response.data.data;
      });
    }
  }
};
</script>
